در جلسات گذشته آموزشهای ابتدایی زبان برنامه نویسی پی اچ پی را با هم گذراندیم. حالا میواهیم در این جلسه به آرایهها بپردازیم.
آرايه ها در پیاچپی
اگر خاطرتان باشد در جلسات قبل به صورت مفصل در مورد متغییرها در پیاچدی با شما صحبت کردیم و انواع آن را نیز مورد بررسی قرار دادیم. متغییرها میتوانند یک مقدار را برای ما نگهداری کنند و در مواقع نیاز میتوان به آن مقدار دسترسی داشت. اما این روش برای ذخیره سازی اطلاعات همیشه کاربردی نیست و فرض کنید تعداد زیادی داده از یک نوع خاص را بخواهیم ذخیره کنیم. در چنین شرایطی طبیعا معرفی و استفاده چند متغییر کاربردی به نظر نمیاید. اینجاست که آرایهها وارد عمل میشوند.
آرایه به زبان ساده همان متغییر است با این تفاوت که میتوان بیش از یک مقدار را در آن قرار داد. (حتی میتوان از آرایههای سه بعدی استفاده کرد که فعلا کاری با آنها نداریم و فعلا آرایههای معمولی را مورد بررسی قرار خواهیم داد.)
آرایهها خطی (د
و بعدی)
خب برای معرفی و استفاده از آرایهها همانند متغیرها یک علامت $ را تایپ کرده و نام مورد نظر را برای آرایه انتخاب میکنیم. سپس علامت = را قرار داده و با عبارت کلیدی Array اقدام به ذخیره سازی دادهها در آن آرایه میکنیم. به مثال زیر توجه کنید:
<?php
$names = Array("zoomit","kojaro","zoomg");
?>
همانطور که در کد بالا میبینید ما سه مقدار zoomit، kojaro، و zoomg را در آرایهای به نام names ذخیره کردیم. اما چگونه میتوان به مقدار مورد نظر دسترسی داشت؟ فرض کنید در اسکریپت مورد نظرتان نیاز دارید تا به داده دوم یعنی kojaro دسترسی داشته باشید. برای اینکار باید از ایندکس گذاری آرایهها استفاده کنیم.
دقت کنید در آرايهها شماره هر داده با یک عدد منحصر به فرد که از ۰ شروع شده و یک واحد یک واحد به این مقدار اضافه میشود. مثلا برای آرایه بالا ما ایندکس دادهها به ترتیب از چپ به راست برابر با ۰ سپس ۱ و بعد از آن ۲ خواهد بود. نکته مهم اینجاست که شمارهگذاری (ایندکس) دادهها در آرایهها در تمام زبانهای برنامه نویسی به همین شکل است و از عدد صفر شروع میشود. بنابراین طبیعی است که برای آرایه فوق که شامل ۳ عضو است این مقادیر ۰ و ۱ و ۲ باشند.
با توجه به توضیح بالا برای دسترسی به مقدار kojaro باید از کد زیر استفاده کنیم:
<?php
$names = Array("zoomit","kojaro","zoomg");
//access and echo kojaro from above array
echo $names[1]; //this will print : kojaro
?>
همانطور که میبینید با قرار دادن شماره ایندکس عضو مورد نظر در داخل [] و پس از نام آرایه میتوانید به عضو مورد نظر دسترسی داشته باشید. اما حال فرض کنید شرایطی پیش میآید که شما باید خودتان شمارهگذاری ایندکسها را به دست بگیرید. اینکار در پیاچپی به راحتی آب خوردن است! به کد زیر دقت کنید:
<?php
$user_details = Array("name" => "mojtaba", "age" => "25", "fav" => "php");
?>
همانطور که در کد بالا میبینید ما در آرایهای به نام user_details یکسری از مشخصات کاربر را ذخیره کرده و برای هر داده یک ایندکس اختصاصی در نظر گرفتیم.
در این شرایط باز هم البته میتوانید از روش قبلی بهره ببرید و به عنوان مثال برای دسترسی به مقدار نام از ایندکس شماره صفر استفاده کنید.
اما در آرایه بالا ما سه مشخصه نام، سن و علاقه را در یک آرایه قرار داده و برای هر کدام از این دادهها یک ایندکس دلخواه تعریف کردیم که در مثال بالا این ایندکسها به ترتیب: name سپس age و در آخر fav هستند. حالا برای دسترسی به مقدار age کافیست از کد زیر استفاده کنید:
<?php
$user_details = Array("name" => "mojtaba", "age" => "25", "fav" => "php");
//access and echo age in user_details
echo $user_details['age']; //this will prints: 25
?>
همانطور که مشاهده میکنید به جای شماره ایندکس داده مورد نظر از ایندکس اختصاصی خودمان برای دسترسی به سن کاربر در آرایه فوق بهره گرفتیم. نکته مهم اینجاست که به نحوه نوشتن آرایهها و نیز اختصاص ایندکس دلخواه خیلی دقت کنید تا کد شما به درستی اجرا شود.
روش دیگر
روش دیگر برای اختصاص دادن مقدار به آرایهها به صورت زیر است:
<?php
$user_details['name'] = "mojtaba";
$user_details['age'] = 25;
$user_details['fav'] = "php";
echo $user['age']; //this will prints 25
?>
کد بالا و مثال قبل عینا یک نتیجه را در بر خواهند داشت و در این مرحله باید انقدر پیشرفت کرده باشید که کد بالا را خودتان براحتی تحلیل کنید. تنها روش در این بخش فرق کرده و نتیجه یکسان است. پیاچپی در اکثر بخشها به همین صورت دست توسعه دهنده را بسیار باز گذاشته و میتوان حتی در مواردی با خلاقیت خود روشهای جدیدی برای استفاده از پیشفرضهای برنامه نویسی بدست آورید.
آرايههای چندگانه (چند بعدی)
همانطور که گفتیم آرایهها فقط به صورت خطی مورد استفاده قرار نمیگیرند. یکی از بهترین قابلیتهای پیاچپی این است که شما میتواند آرايههایی با بینهایت بعد ایجاد کنید! خب این یعنی چه؟ بهتر است کار را با یک مثال دیگر ادامه دهیم:
فرض کنید شما دادههای مرتبط با چند کاربر را از بانک داده گرفتهاید و میخواهید آنها مورد استفاده قرار دهید. در این حالت بهترین کار این است که اطلاعات مرتبط با هر کاربر در یک آرایه مختص به خود او قرار گیرد و بعد از اینکار براحتی میتوان به هر مشخصه از هر کاربر دسترسی یافت. استفاده از آرایههای چند بعدی درست شبیه آرایههای دوبعدی است و فقط کمی مراحل در اینجا بیشتر خواهد شد.
<?php
$users = Array ("user1" => array ("name" => "mojtaba", "fav" => "php"), "user2" => array ("naem" => "miaad", "fav" => "zoomit"));
?>
همانطور که در کد بالا میبینید اینبار به جای اختصاص دادن یک داده در واقع یک آرایه به هر عضو اختصاص داده شده است. اگر کد بالا کمی شما را سردرگم کرده اصلا جای نگرانی نیست چراکه با چندبار تمرین واقعی و نوشتن کد به شما قول میدهم این مبحث را آنچنان خوب یاد میگیرید که فکرش را هم نمیکنید! پس همین حالا دست بکار شوید و همزمان با خواندن آموزش کدها را بنویسید.
در کد بالا ما اطلاعات دو کاربر را که برای هر کدام شامل نام و علاقه وی میشود در آرایهای به نام users قرار دادیم. اما برای دسترسی به هر عضو از این آرایه چگونه باید عمل کرد؟ فرض کنید میخواهیم نام کاربر اول را در خروجی چاپ کنیم. در این حالت باید از کد زیر استفاده کنیم:
<?php
$users = Array ("user1" => array ("name" => "mojtaba", "fav" => "php"), "user2" => array ("naem" => "miaad", "fav" => "zoomit"));
echo $users['user1']['name']; //this will prints : mojtaba
?>
خب همانطور که دیدید در اینجا کافیست از دو ایندکس استفاده کنیم. ایندکس اول user1 است که به پیاچپی میگوید در آرایه users به دنبال عضوی به نام user1 هستیم. سپس در ایندکس دوم به پیاچپی میگوییم به دنبال مشخصه name از عضو انتخاب شده هستیم. در اینجا همانطور که در کد هم بخوبی مشخص شده خروجی mojtaba خواهد بود.
مبحث آرایههای چند بعدی همانطور که گفتیم فقط نیاز به تمرین دارد. اگر یادتان باشد در بخش آرایههای خطی مثال آوردیم تحت عنوان روش دیگر برای تمرین شما سعی کنید آن روش را برای آرایههای چند بعدی مثلا برای کد بالا مورد استفاده قرار دهید.
مبحث این جلسه از آموزش PHP نیز در همینجا به پایان میرسد. از جلسه بعد رفته رفته شروع به ساخت اسکریپتهای کاربردی میکنیم و مباحث بیشتری را خواهیم آموخت. در صورتی که سوالی در مورد محتوای این جلسه دارید نیز در بخش دیدگاهها آن را اعلام نمایید.
نظرات شما عزیزان: